package study.kit.el.zh;

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import study.kit.el.zh.parse.RangeVO;
import study.kit.el.zh.parse.RowVO;
import study.kit.el.zh.parse.ZhParser;
import study.kit.el.zh.table.TableCtx;
import study.kit.el.zh.table.TableRow;
import study.kit.el.zh.table.TableUtil;
import study.kit.el.zh.table.Validator;

import java.nio.charset.Charset;
import java.util.List;

@Slf4j
public class TableTools {

    /**
     *
     */
    public static List<TableRow> pare(String wholeJson) {
        // 验证
        if (StrUtil.isEmpty(wholeJson)) {
            throw new IllegalArgumentException("数据为空");
        }

        // 表头
        RowVO header = ZhParser.parseHeader(wholeJson);
        Validator.checkHeader(header);
        // 合并
        List<RangeVO> rangeLt = ZhParser.parseRange(wholeJson);
        Validator.checkMerge(rangeLt, header);
        // 数据
        List<RowVO> dataLt = ZhParser.parseData(wholeJson);

        // 构造上下文
        TableCtx ctx = new TableCtx(header, rangeLt, dataLt);
        //
        List<TableRow> rowLt = TableUtil.parse(ctx);
        return rowLt;
    }

    @Test
    public void test1() {
        //
        String wholeJson = ResourceUtil.readStr("zh/test.json", Charset.defaultCharset());
        TableTools.pare(wholeJson);
    }
}
